package cn.bytengine.stem.contexts;

/**
 * 结构字段定义，用于描述一个数据结构的字段信息 {@link Struct}
 */
public class FieldDefine {
    /**
     * 数据结构字段名称
     */
    private String fieldName;
    /**
     * 数据结构字段类型
     */
    private Class<?> fieldType;
    /**
     * 数据结构字段类型的字符串形式，主要用于持久化
     */
    private String fieldTypeStr;

    /**
     * 获取数据结构字段名称
     *
     * @return 数据结构字段名称
     */
    public String getFieldName() {
        return fieldName;
    }

    /**
     * 设置数据结构字段名称
     *
     * @param fieldName 数据结构字段名称
     * @return 当前字段定义对象，支持链式调用
     */
    public FieldDefine setFieldName(String fieldName) {
        this.fieldName = fieldName;
        return this;
    }
    /**
     * 获取数据结构字段类型
     *
     * @return 数据结构字段类型
     */
    public Class<?> getFieldType() {
        return fieldType;
    }
    /**
     * 设置数据结构字段类型
     *
     * @param fieldType 数据结构字段类型
     * @return 当前字段定义对象，支持链式调用
     */
    public FieldDefine setFieldType(Class<?> fieldType) {
        this.fieldType = fieldType;
        return this;
    }
    /**
     * 获取数据结构字段类型字符串
     *
     * @return 数据结构字段类型字符串
     */
    public String getFieldTypeStr() {
        return fieldTypeStr;
    }

    /**
     * 设置数据结构字段类型字符串
     *
     * @param fieldTypeStr 数据结构字段类型字符串
     * @return 当前字段定义对象，支持链式调用
     */
    public FieldDefine setFieldTypeStr(String fieldTypeStr) {
        this.fieldTypeStr = fieldTypeStr;
        return this;
    }

    @Override
    public String toString() {
        return "FieldDefine{" +
                "fieldName='" + fieldName + '\'' +
                ", fieldType=" + fieldType +
                ", fieldTypeStr='" + fieldTypeStr + '\'' +
                '}';
    }
}
